﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate;
using CRC.NHibernate;

namespace CRC.Inspecciones.Dominio.Controlador
{
    class ControladorListarInspeccionesPeriodicas
    {

        public IList<Object[]> listarInspecciones() {
            ISession session = null;
            ITransaction tx = null;
            IList<Object[]> infoInspecciones = null;
            String hql = String.Empty;
           try {
                
                session = NHibernateHelper.GetCurrentSession();
                tx = session.BeginTransaction();

                hql = "select ip.Id, ip.HaFinalizado, ip.Año, ip.Mes, ip.Inspeccionado.Zona.Nombre, " + 
                    "ip.Inspeccionado.Proyecto, ip.Inspeccionado.Nombre_Salon, " +
                    "ip.Inspeccionado.Zona.Inspector.Nombre, " +
                    "ip.Inspeccionado.Zona.Inspector.TelefonoFijo, " +
                    "ip.Inspeccionado.Zona.Inspector.TelefonoMovil1, " +
                    "ip.Inspeccionado.Zona.Inspector.TelefonoMovil2 , ip.Observaciones, ip.Inspeccionado.Id " + 
                    "from InspeccionPeriodica ip where ip.HaFinalizado=false " +
                    "order by ip.Inspeccionado.Zona.Nombre desc, ip.Inspeccionado.Nombre_Salon desc ";

                infoInspecciones = session.CreateQuery(hql).List<Object[]>();
                tx.Commit();

                return infoInspecciones;

            }
            catch (HibernateException he)
            {
                if (tx != null) { tx.Rollback(); }
                if (session != null) session.Close();
                throw he;
            }
        }

        public IList<Object[]> listarInspecciones_Hechas()
        {
            ISession session = null;
            ITransaction tx = null;
            IList<Object[]> infoInspecciones = null;
            String hql = String.Empty;
            try
            {

                session = NHibernateHelper.GetCurrentSession();
                tx = session.BeginTransaction();

                hql = "select ip.Id, ip.HaFinalizado, ip.Año, ip.Mes, ip.Inspeccionado.Zona.Nombre, " +
                    "ip.Inspeccionado.Proyecto, ip.Inspeccionado.Nombre_Salon, " +
                    "ip.Inspeccionado.Zona.Inspector.Nombre , ip.Inspeccionado.Zona.Inspector.Apellido1 , " +
                    "ip.Inspeccionado.Zona.Inspector.Apellido2, ip.Inspeccionado.Zona.Inspector.TelefonoFijo, " +
                    "ip.Inspeccionado.Zona.Inspector.TelefonoMovil1, " +
                    "ip.Inspeccionado.Zona.Inspector.TelefonoMovil2 , ip.Observaciones, ip.Inspeccionado.Id " +
                    "from InspeccionPeriodica ip where ip.HaFinalizado=true " +
                    "order by ip.Inspeccionado.Zona.Nombre desc, ip.Inspeccionado.Nombre_Salon desc ";

                infoInspecciones = session.CreateQuery(hql).List<Object[]>();
                tx.Commit();

                return infoInspecciones;

            }
            catch (HibernateException he)
            {
                if (tx != null) { tx.Rollback(); }
                if (session != null) session.Close();
                throw he;
            }
        }
    }
}
